02. 从头创建仓库
在对 Git 仓库进行 commit 或执行任何其他操作之前,需要一个实际存在的仓库。要使用 Git 新建一个仓库,我们将使用
git init
命令。
init
子命令是"initialize"(初始化)的简称,这个命令很有用,因为它将进行所有仓库初始设置。稍后我们将了解它的作用。
所需的命令
注意!我们将在这节课使用以下终端命令:
ls- 用来列出文件和目录mkdir- 用来新建目录cd- 用来更改目录rm- 用来删除文件和目录
如果你不知道如何使用它们,请参阅我们的 Linux 命令行基础 课程!
我们还会涉及的一个概念是当前目录,即你的 shell 正在查看的目录。使用 cd 可以更改工作目录,使用
ls(单独使用)会列出工作目录下的文件。如果你忘记 shell 的当前工作目录,可以使用pwd命令(表示 print working directory 输出工作目录)输出该目录的名称。
创建课程目录
我们将为本课程新建一个项目。因为我们都是专业人士,因此我们希望我们的项目具有条理性。如果你已经在计算机上有一个放置所有项目的文件夹,则可以继续这么做。我会将所有的工作文件存储在目录
udacity-git-course
下。
如果你想跟着我一起操作:
-
创建一个目录,叫做
udacity-git-course -
在该目录中,创建另一个目录,叫做
new-git-project -
使用
cd命令移到new-git-project目录下
如果你和我一样喜欢复制粘贴,则在终端上运行以下命令:-
mkdir -p udacity-git-course/new-git-project && cd $_
(在运行此命令前,确保使用
cd
命令转到你想将这些文件存储到的位置。例如,如果你想将文件存储到桌面上,则使用
cd
转到桌面,然后再运行该命令。)
一切准备好后,你的终端应该位于
new-git-project
目录中,并看起来如下所示:
位于 new-git-project 目录下的终端应用。
git init
很棒!我们已经准备好,并且可以开始使用
git init
命令了!
这是最简单的命令之一。你只需在终端上运行
git init
。就这么多内容,立即试试吧!
终端显示
git init
命令正在运行。该命令会在当前目录下初始化生成一个空的 Git 仓库。
提示符更改?
SOLUTION:
是的,我看到单词 master 了。## git init 命令的作用
运行
git init
命令会初始化 Git 跟踪所有内容会用到的所有必要文件和目录。所有这些文件都存储在叫做
.git
(注意开头有个
.
,表示在 Mac/Linux 上,它将是一个隐藏目录)的目录下。这个
.git
目录是一个库!Git 会将所有 commit 记录在这里,并跟踪所有内容!
我们来大致了解下
.git
目录下的内容。
警告:请勿直接修改
.git目录下的任何文件。这是仓库的核心。如果你更改了文件名或文件内容,Git 可能就无法跟踪你保存在仓库中的文件,你可能会丢失很多内容!可以查看这些文件,但是请勿编辑或删除这些文件。
Mac 的 Finder 窗口正在显示“.git”隐藏目录中的内容。
.git 目录内容
我们将查看
.git
目录…对这门课程来说,该目录并不重要,因此不用记住任何内容,你可以在此处深入了解 Git 背后的工作原理。
下面简要概述了
.git
目录下的各项内容:
-
config 文件
- 存储了所有与项目有关的配置设置。
摘自于
Git Book - 英
|
中文点此处
:
Git 会查看 Git 目录下你当前所使用仓库对应的配置文件(.git/config)中的配置值。这些值仅适用于当前仓库。
例如,假设你将 Git 全局配置为使用你的个人电子邮箱。如果你想针对某个项目使用你的工作邮箱,则此项更改会被添加到该文件中。
-
description 文件 - 此文件仅用于 GitWeb 程序,因此可以忽略
-
hooks 目录 - 我们会在此处放置客户端或服务器端脚本,以便用来连接到 Git 的不同生命周期事件
-
info 目录 - 包含全局排除文件
-
objects 目录 - 此目录将存储我们提交的所有 commit
-
refs 目录 - 此目录存储了指向 commit 的指针(通常是“分支”和“标签”)
-
注意,除了 hooks 目录,你应该不会对这里的其他内容有太多的困扰。hooks 目录可以用来连接到 Git 工作流的不同部分或事件,但是在这门课程中,我们不会对此作过多介绍。
深入研究
git init 小结
使用
git init
命令可以在当前目录下创建新的空仓库。
$ git init
运行此命令可以创建隐藏
.git
目录。此
.git
目录是仓库的核心/存储中心。它存储了所有的配置文件和目录,以及所有的 commit。